<?php


namespace app\back\controller;

use app\back\model\DataModel;
use app\middleware\BackAuth;
use think\facade\Validate;
use app\Request;
use think\response\Json;
use think\validate\ValidateRule;

class Data
{
    protected $middleware = [BackAuth::class];

    /**获取数据统计
     * @param Request $request
     * @return Json
     */
    public function getTotalList(Request $request)
    {
        // 获取参数
        $input['limit'] = $request->post('limit');
        $input['page'] = $request->post('page');
        $input['start'] = $request->post('start');
        $input['end'] = $request->post('end');
        $input['agent_name'] = $request->post('agent_name');
        $input['operator_name'] = $request->post('operator_name');
        $input['company_name'] = $request->post('company_name');
        // 参数校验
        $validate = Validate::rule([
            'limit' => ValidateRule::isRequire(null, '缺少参数'),
            'page' => ValidateRule::isRequire(null, '缺少参数'),
            'agent_name' => function ($value) {
                return $value === null ? '缺少参数' : true;
            },
            'operator_name' => function ($value) {
                return $value === null ? '缺少参数' : true;
            },
            'company_name' => function ($value) {
                return $value === null ? '缺少参数' : true;
            },
            'start' => function ($value) {
                return checkDatetime($value,   true) ? true : '不合法参数';
            },
            'end' => function ($value) {
                return checkDatetime($value, true) ? true : '不合法参数';
            },
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return DataModel::getTotalList($input, $request->info);
    }

    /**获取商品销售统计
     * @param Request $request
     * @return Json
     */
    public function getGoodsTotalList(Request $request)
    {
        // 获取参数
        $input['limit'] = $request->post('limit');
        $input['page'] = $request->post('page');
        $input['start'] = $request->post('start');
        $input['end'] = $request->post('end');
        $input['name'] = $request->post('name');
        // 参数校验
        $validate = Validate::rule([
            'limit' => ValidateRule::isRequire(null, '缺少参数'),
            'page' => ValidateRule::isRequire(null, '缺少参数'),
            'name' => function ($value) {
                return $value === null ? '缺少参数' : true;
            },
            'start' => function ($value) {
                return checkDatetime($value, true) ? true : '不合法参数';
            },
            'end' => function ($value) {
                return checkDatetime($value, true) ? true : '不合法参数';
            },
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return DataModel::getGoodsTotalList($input, $request->info);
    }

    /**获取商品销售统计excel
     * @param Request $request
     * @return Json
     */
    public function getGoodsTotalExcel(Request $request)
    {
        // 获取参数
        $input['start'] = $request->post('start');
        $input['end'] = $request->post('end');
        $input['name'] = $request->post('name');
        // 参数校验
        $validate = Validate::rule([
            'name' => function ($value) {
                return $value === null ? '缺少参数' : true;
            },
            'start' => function ($value) {
                return checkDatetime($value, true) ? true : '不合法参数';
            },
            'end' => function ($value) {
                return checkDatetime($value, true) ? true : '不合法参数';
            },
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return DataModel::getGoodsTotalExcel($input, $request->info);
    }
}